package com.sh.data.engine.domain.datadev.offline.model.param;

import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;

@Data
public class OfflineDevDataQualityRuleParam {

    //    @ApiModelProperty(value = "nodeId", required = true)
    @NotNull(message = "node id不能为空")
    private Long nodeId;

    /**
     * 表id
     */
//    @ApiModelProperty(value = "表id", required = true)
    @NotNull(message = "表id不能为空")
    private Long tblId;

    /**
     * 表名
     */
    @NotBlank(message = "表名不能为空")
    private String tblName;

    /**
     * 字段名，多个字段名用逗号隔开
     */
//    @ApiModelProperty(value = "字段名，多个用逗号隔开", required = true)
    @NotBlank(message = "字段名不能为空")
    private String fieldNames;

    /**
     * 字段类型，多个字段名用逗号隔开
     */
    @NotBlank(message = "字段类型不能为空")
    private String fieldTypes;

    /**
     * 规则强度 0-强 1-弱
     */
  /*@ApiModelProperty(value = "规则强度 0-强 1-弱", allowableValues = "0,1", required = true)
  @NotNull(message = "请选择规则强度")
  private Integer ruleStrength;*/

//    @ApiModelProperty(value = "规则来源 0-内置模版规则 1-标准模版规则 ，模版规则必填", allowableValues = "0,1")
    private Integer ruleFrom;

    //    @ApiModelProperty(value = "规则类型 0-字段级规则 1-表级规则 ，模版规则必填", allowableValues = "0,1")
    private Integer ruleType;

    /**
     * 规则模版id
     */
//    @ApiModelProperty(value = "规则模版id，模版规则必填")
    private Long templateId;

    /**
     * 是否是自定义规则 0-否 1-是
     */
//    @ApiModelProperty(value = "是否是自定义规则 0-否 1-是", allowableValues = "0,1", required = true)
    @NotNull(message = "规则分类不能为空")
    private Integer ruleDiy;

    /**
     * 0-大于 1-大于等于 2-等于 3-小于 4-小于等于 5-不等于 6-属于 7-不属于
     */
//    @ApiModelProperty(value = "比较方式，0-大于 1-大于等于 2-等于 3-小于 4-小于等于 5-不等于 6-属于 7-不属于")
    private String ruleCompareType;

    /**
     * 描述
     */
//    @ApiModelProperty(value = "描述")
    @Length(max = 128, message = "描述最多128个字符")
    private String remark;

    /**
     * 统计方式 count sum max min avg
     */
//    @ApiModelProperty(value = "统计方式")
    private String ruleDiyStatisticalModel;

    //    @ApiModelProperty(value = "分区表达式")
    private String partitionExpression;

    /**
     * 规则判断条件，json格式
     */
//    @ApiModelProperty(value = "规则判断条件，json格式，如：[{'key':'max','value':20},{'key':'min','value':10}]")
    private String ruleCondition;

    /**
     * 期望值
     */
//    @ApiModelProperty(value = "期望值")
    private String ruleExpectValue;

    /**
     * 规则模版名字 为了省去一步表连接存的时候就存进去
     */
    private String templateName;

    /**
     * 分类 0-完整性 1-准确性 2-唯一性 3-有效性
     */
    private Integer templateCategory;

    /**
     * 规则名称
     */
    @Length(min = 2, max = 32, message = "规则名称长度为2-32个字符")
    @Pattern(regexp = "[a-zA-Z0-9_\\u4e00-\\u9fa5]+", message = "规则名称仅支持中文、字母、数字、下划线")
    private String ruleName;

    //    @ApiModelProperty(value = "模版规则过滤条件")
    private String templateFilter;

    //    @ApiModelProperty(value = "自定义规则的sql")
    private String diySql;
}
